<?php
App::uses('AppController', 'Controller');

class ConfigController extends AppController {
	
	var $uses = 'EventoConfig';
	var $fields = array('nome_evento', 'local_evento', 'tesoureiro', 'show_taxas', 'show_datas', 'show_anais', 'outros_sugestoes', 'liberar_certificados_de_apresetacao');
	
	public function index(){
		if($this->isAdmin()){
			if(!empty($this->request->data)){
				if($this->EventoConfig->saveValues($this->request->data)){
					$this->Session->setFlash(__('Configurações efetuadas com sucesso!'), 'flash/bootstrap', array('class'=>'alert alert-success'));
					$this->carrega_configs();
				}
				else $this->Session->setFlash(__('Configurações não foram feitas!'), 'flash/bootstrap', array('class'=>'alert alert-error'));
			}
			$this->request->data = $this->EventoConfig->many_values($this->fields);
		}
		else{
			$this->notAuth();
		}
	}
	
	public function csvdump(){
		if($this->isAdmin()){
			$this->loadModel('Usuario');
			$this->loadModel('Geonames.Pais');
			$this->loadModel('Geonames.RegiaoAdministrativa');
			$this->loadModel('Geonames.Cidade');
			$data = $this->Usuario->query(
				'SELECT * FROM usuarios '.
					'LEFT JOIN especializacao ON (especializacao.id = usuarios.especializacao_id) '.
					'LEFT JOIN associacao ON (associacao.id = usuarios.associacao_id) '.
					'LEFT JOIN enderecos ON (enderecos.usuario_id = usuarios.id) '.
					'LEFT JOIN pagamentos ON (pagamentos.usuario_id = usuarios.id) '.
					'LEFT JOIN plugin_payment_pagamentos ON (pagamentos.id = plugin_payment_pagamentos.pagamento_system_id) '.
					'LEFT JOIN plugin_payment_status ON (plugin_payment_status.id = plugin_payment_pagamentos.status_id) '.
					'ORDER BY usuarios.id ASC'
			);
			$csv = array();
			$csv[] = array('COD', 'Nome', 'Crachá', 'E-mail', 'CPF', 'Sexo', 'Instituição',
					'Cargo', 'Especialização', 'Associação', 'País', 'Estado', 'Cidade', 'Bairro', 'Presente',
			'Valor', 'Status', 'Transaction'
			);
			foreach ($data as $item){
				$csv[] = array(
						$item['usuarios']['id'],
						$item['usuarios']['nome'],
						$item['usuarios']['nome_cracha'],
						$item['usuarios']['email'],
						$item['usuarios']['cpf'],
						$item['usuarios']['sexo'],
						$item['usuarios']['instituicao'],
						$item['usuarios']['cargo'],
						$item['especializacao']['nome'],
						$item['associacao']['nome'],
						(!empty($item['enderecos']['pais'])) ? $this->Pais->findCountryByGeoCode($item['enderecos']['pais']) : '',
						$this->RegiaoAdministrativa->findStateByGeoCode($item['enderecos']['estado']),
						$this->Cidade->findCityByGeoCode($item['enderecos']['cidade']),
						$item['enderecos']['bairro'],
						$item['usuarios']['presente'] ? __('Sim'): __('Não'),
						$item['plugin_payment_pagamentos']['value'],
						$item['plugin_payment_status']['text'],
						$item['plugin_payment_pagamentos']['transaction_code']
				);
			}
			$out = fopen('dump', 'w');
			foreach($csv as $item)
				fputcsv($out, $item);
			fclose($out);
	    	$this->response->file(
			    'dump',
			    array('download' => true, 'name' => 'banco_de_dados.csv')
			);
	    	return $this->response;
    	}
    	else{
    		$this->notAuth();
    	}
	}
	
	public function csvdump_trabalhos() {
		if($this->isAdmin()){
			$this->loadModel('Trabalho');
			$this->loadModel('Categoria');
			$categorias = $this->Categoria->find('list');
			$this->Trabalho->unbindModel(array('belongsTo' => array('Categoria')));
			
			$data = $this->Trabalho->find('all');
			
			//pr($data);
			$csv = array();
			$csv[] = array('Nome', 'E-mail', 'Categoria', 'Sessão', 'Titulo do Trabalho',
					'Resumo', 'Palavras-Chave'
			);
			
			foreach ($data as $item){
				if($item['Avaliacao']['nota'] != 0) {
					$categoria = $categorias[$item['Avaliacao']['nota']];
				}
				else if ($item['Avaliacao']['nota_reavaliacao'] == 0) {
					$categoria = 'Reprovado';
				}
				else if(!is_null($item['Avaliacao']['nota_reavaliacao'])) {
					pr("reaval");pr($item['Avaliacao']['nota_reavaliacao']);
					$categoria = $categorias[$item['Avaliacao']['nota_reavaliacao']];
				}
				else {
					$categoria = 'Não Avaliado';
				}
				$keys = '';
				foreach ($item['Keywords'] as $keywd) {
					$keys = $keys . '/' . $keywd['keyword'];
				}
				$csv[] = array(
						$item['Usuario']['nome'],
						$item['Usuario']['email'],
						$categoria,
						$item['Sessao']['nome'],
						$item['Trabalho']['titulo'],
						$item['Trabalho']['resumo'],
						$keys,
				);
			}
			$out = fopen('dump', 'w');
			foreach($csv as $item)
				fputcsv($out, $item);
			fclose($out);
			$this->response->file(
					'dump',
					array('download' => true, 'name' => 'dados_trabalhos.csv')
			);
			return $this->response;
		}
		else{
			$this->notAuth();
		}
		
	}
	
	public function csvdump_recepcionista(){
		if($this->isRecepcionista()){
			$this->loadModel('Usuario');
			$this->loadModel('Geonames.Pais');
			$this->loadModel('Geonames.RegiaoAdministrativa');
			$this->loadModel('Geonames.Cidade');
			$data = $this->Usuario->query(
					'SELECT * FROM usuarios '.
					'LEFT JOIN especializacao ON (especializacao.id = usuarios.especializacao_id) '.
					'LEFT JOIN associacao ON (associacao.id = usuarios.associacao_id) '.
					'LEFT JOIN enderecos ON (enderecos.usuario_id = usuarios.id) '.
					'LEFT JOIN pagamentos ON (pagamentos.usuario_id = usuarios.id) '.
					'LEFT JOIN plugin_payment_pagamentos ON (pagamentos.id = plugin_payment_pagamentos.pagamento_system_id) '.
					'LEFT JOIN plugin_payment_status ON (plugin_payment_status.id = plugin_payment_pagamentos.status_id) '.
					'WHERE plugin_payment_status.id IN (3,4)'.
					'ORDER BY usuarios.id ASC'
			);
			$csv = array();
			$csv[] = array('Nome', 'Crachá', 'Sexo', 'Instituição',
					'Cargo', 'Especialização', 'Associação', 'País', 'Estado', 'Cidade', 'Bairro',
					'Valor'
			);
			foreach ($data as $item){
				$csv[] = array(
						$item['usuarios']['nome'],
						$item['usuarios']['nome_cracha'],
						$item['usuarios']['sexo'],
						$item['usuarios']['instituicao'],
						$item['usuarios']['cargo'],
						$item['especializacao']['nome'],
						$item['associacao']['nome'],
						(!empty($item['enderecos']['pais'])) ? $this->Pais->findCountryByGeoCode($item['enderecos']['pais']) : '',
						$this->RegiaoAdministrativa->findStateByGeoCode($item['enderecos']['estado']),
						$this->Cidade->findCityByGeoCode($item['enderecos']['cidade']),
						$item['enderecos']['bairro'],
						$item['plugin_payment_pagamentos']['value'],
				);
			}
			$out = fopen('dump', 'w');
			foreach($csv as $item)
				fputcsv($out, $item);
			fclose($out);
			$this->response->file(
					'dump',
					array('download' => true, 'name' => 'banco_de_dados.csv')
			);
			return $this->response;
		}
		else{
			$this->notAuth();
		}
	}
	
// 	public function csvdump(){
// // 		unlink(WWW_ROOT.'banco_de_dados.zip');
// 		$tables = $this->EventoConfig->query('show tables where Tables_in_sinape14 NOT LIKE "geonames_%"');
// 		$dir = date('Y-m-d-H-i-s');
// 		mkdir(MYSQLDUMP_LOCATION.DS.$dir);
// 		chmod(MYSQLDUMP_LOCATION.DS.$dir, 0777);
// 		foreach($tables as $table){
// 			$tb_name = $table['TABLE_NAMES']['Tables_in_sinape14'];
// 			$command = "SELECT * FROM ";
// 			$columns_command = "SHOW columns FROM ";
// 			$columns_row = $this->EventoConfig->query($columns_command.$tb_name);
// 			$line = '';
// 			foreach($columns_row as $column){
// 				$line .= '"'.$column['COLUMNS']['Field'].'",'; 
// 			}
// 			$line = substr($line, 0, -1);
// 			$line .= "\n";
// 			$rows = $this->EventoConfig->query($command.$tb_name);
// 			foreach($rows as $item){
// 				foreach($item[$tb_name] as $field){
// 					$line .= "\"$field\",";
// 				}
// 				$line = substr($line, 0, -1);
// 				$line .= "\n";
// 			}
// 			$file = fopen(MYSQLDUMP_LOCATION.DS.$dir.DS.$tb_name.'.csv', "w");
// 			fwrite($file, $line);
// 			fclose($file);
// 			$line = '';
// 		}
// 		$zipfile = $this->createZip($dir);
// 		$this->response->file('banco_de_dados.zip',  array('download' => true, 'name' => 'database.zip'));
// 		rmdir(MYSQLDUMP_LOCATION.DS.$dir);
// 		return $this->response;
// 	}
	
}